package com.lyq.dao;

import com.lyq.bean.Admin;
import com.lyq.utils.DBMySql;
import java.sql.ResultSet;
import java.sql.SQLException;

public class AdminDao {
    /**
     * 登录验证方法
     * 根据账号和密码查询数据库
     *
     * @param account  登录账号
     * @param password 登录密码
     * @return 若验证成功则返回对应的Admin对象，否则返回null
     */
    public static Admin Login(String account, String password){
        // SQL查询语句：根据账号和密码查询信息
        String sql = "select * from admin where account=? and password=?";

        // 调用数据库工具类执行查询，传入SQL语句和参数
        try(ResultSet resultSet=DBMySql.query(sql,account,password)){

            // 判断查询结果集是否有数据
            if (resultSet != null && resultSet.next()){

                // 返回创建的Admin对象
                return new Admin(
                        resultSet.getString("account"),
                        resultSet.getString("password"),
                        resultSet.getString("nick")
                );
            }
        }catch (SQLException e) {
            return null;
        }

        // 若查询无结果或发生异常，返回null表示登录失败
        return null;
    }

    public static int changePassword(Admin admin,String oldPassword,String newPassword){
        // SQL查询语句：根据账号和密码查询信息
        String sql = "select * from admin where account=?";
        try (ResultSet result = DBMySql.query(sql, admin.getAccount())) {

            // 检查结果集是否有数据
            if (result == null || !result.next()) {
                return -1; // 账号不存在
            }
            // 获取数据库中的密码
            String dbPassword = result.getString("password");

            if (dbPassword.equals(oldPassword)) {
                    String changePasswordSql = "update admin set password=? where account=?";
                    return DBMySql.update(changePasswordSql,newPassword,admin.getAccount());
                }else {
                    return -1;
                }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
